מערכים Haim Michael. All Rights Reserved.

Similar documents
ASP.Net MVC + Entity Framework Code First.

הבסיס כתיבת התכנית הראשונה שימוש במשתנים. הטיפוס הבסיסי object. הטיפוס הבסיסי string משפטי בקרה. שימוש ב- Enumerations. שימוש ב- Namespaces

מבוא לתכנות ב- JAVA תרגול 7

עץ תורשה מוגדר כך:שורש או שורש ושני בנים שכל אחד מהם עץ תורשה,כך שערך השורש גדול או שווה לסכום הנכדים(נכד-הוא רק בן של בן) נתון העץ הבא:

Rules Game (through lesson 30) by Nancy Decker Preparation: 1. Each rule board is immediately followed by at least three cards containing examples of

המבנה הגאומטרי של מידה

קורס מטלב לפיסיקאים שיעור מס' 10: משתנים מורכבים

בוחן בתכנות בשפת C בצלחה

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

יסודות מבני נתונים. תרגול :9 ערימה - Heap

קשירות.s,t V שני צמתים,G=(V,E) קלט: גרף מכוון מ- s t ל- t ; אחרת.0 אם יש מסלול מכוון פלט: הערה: הגרף נתון בייצוג של רשימות סמיכות.

פרוטוקול HTTP הפונקציה header שליחת מידע דחוס. עבודה עם cookies Haim Michael. All Rights Reserved.

ל"תוכנה" שכותבים, כמו פונקציה זו, קוראים "קוד"

טכנולוגיית WPF מספקת למפתחים מודל תכנות מאוחד לחוויית בניית יישומיי

תצוגת LCD חיבור התצוגה לבקר. (Liquid Crystal Display) המערכת.

Practical Session No. 13 Amortized Analysis, Union/Find

מבוא למחשב בשפת פייתון

Structural Vs. Nominal Typing

תוכן העניינים: פרק סדרות סיכום תכונות הסדרה החשבונית:... 2 תשובות סופיות:...8 סיכום תכונות הסדרה ההנדסית:...10

פרק מיון וחיפוש - לשם מה? הגדרה

מכונת מצבים סופית תרגול מס' 4. Moshe Malka & Ben lee Volk

דיאגרמה לתיאור Classes

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

אוסף תרגילים למעבדה ביוניקס - 4

תרגול 8. Hash Tables

ניפוי שגיאות )Debug( מאת ישראל אברמוביץ

שאלון ד' הוראות לנבחן

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 134 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 37

אנגלית (MODULE E) בהצלחה!

ANNEXURE "E1-1" FORM OF IRREVOCABLE STANDBY LETTER OF CREDIT PERFORMANCE OF CONTRACT (WHERE PRICES ARE NOT LINKED TO AN ESCALATION FORMULA)

זה. Nir Adar

אוניברסיטת בן גוריון בנגב

שאלון ו' הוראות לנבחן

Hebrew Ulpan HEB Young Judaea Year Course in Israel American Jewish University College Initiative

מספר השאלון: Thinking Skills נספח: כישורי חשיבה )לפרק ראשון ושני( א נ ג ל י ת (MODULE F) ספרות )מילון הראפס אנגלי-אנגלי-ערבי(

זו מערכת ישרת זוית )קרטזית( אשר בה יש לנו 2 צירים מאונכים זה לזה. באותו מישור ניתן להגדיר נקודה על ידי זוית ורדיוס וקטור

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 102 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 5

Computer Structure. Exercise #1 יש להגיש את התשובות הסופיות על גבי טופס זה.

המחלקה למדעי המחשב, אוניברסיטת בן גוריון מבני נתונים, סמסטר אביב 2102 עבודת בית מספר - 2 מעשית

כפתור רדיו בחירה בודדת מתוך רשימת אפשרויות

2007 Zindell Technologies, Ltd.

למבחן ביסודות מדעי המחשב דוגמא

אנגלית שאלון ז' ג רסה א' הוראות לנבחן בהצלחה! )4( ההנחיות בשאלון זה מנוסחות בלשון זכר ומכוונות לנבחנות ולנבחנים כאחד. (MODULE G)

מבוא למחשב בשפת Matlab

SPSS 10.0 FOR WINDOWS

סה"כ נקודות סה"כ 31 נקודות סה"כ 21 תוכן עניינים של פתרון המבחן. לולאת for )נתון אלגוריתם... מעקב, פלט

א נ ג ל י ת בהצלחה! ב. משרד החינוך בגרות לנבחנים אקסטרניים )מילון הראפס אנגלי-אנגלי-ערבי( השימוש במילון אחר טעון אישור הפיקוח על הוראת האנגלית.

שאלון ו' הוראות לנבחן

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

Patents Basics. Yehuda Binder. (For copies contact:

A R E Y O U R E A L L Y A W A K E?

פעולות קלט פלט Streams( )I\O

אנגלית ספרות בהצלחה! /המשך מעבר לדף/ נספח: כישורי חשיבה )לפרק ראשון ושני( או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

בחינת בגרות, תשע"ז מס' שאלון: מדעי המחשב שאלה 1. Java. blog.csit.org.il הילה קדמן

עצרת חישוב. int iterfactorial(int n) { int res=1; while(n>0) { res*=n; n--; return res;

A Long Line for a Shorter Wait at the Supermarket

ãówh,é ËÓÉÔê ÌW W É Å t" Y w f É ËÓÉÑ É èw É f Ñ u ð NNM YóQ' ÌW W É Y ÉgO d óqk É w f ym Éd É u ð NNM ÌWNQMH uqo ð NNM ÌWNQMH

תרגול 11 תור עץ חיפוש בינארי

(MODULE E) ב ה צ ל ח ה!

Reflection Session: Sustainability and Me

ניסוי בפייתון מכון טכנולוגי לישראל הניסוי מתקיים בבניין פישבך, חדר 573 )במסדרון למאייר(. המאחר ביותר מ- 53 דקות לא יורשה לבצע את הניסוי.

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון א' Corresponds with Module A (Without Access to Information from Spoken Texts) גרסה א'

פרק יעילות היעילות של קריטריון המקום עוסק בנושאים דומים לאלה של קריטריון הזמן. אנו נתרכז בחישובי היעילות של מדד הזמן.

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

THINKING ABOUT REST THE ORIGIN OF SHABBOS

מבוא לאסמבלי מאת אופיר בק חלקים נרחבים ממאמר זה נכתבו בהשראת הספר "ארגון המחשב ושפת סף" אשר נכתב ע"י ברק גונן לתוכנית גבהים של משרד החינוך.

A JEW WALKS INTO A BAR: JEWISH IDENTITY IN NOT SUCH JEWISH PLACES

תכניות סטנדרטיות ב UNIX שרשור פקודות באמצעות Pipeline עבודה ב- bash

סדנת יסודות מטלב שיעור מס' 6: ארגון, מיון ועיבוד נתונים

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

בהצלחה! (MODULE C) Hoffman, Y. (2014). The Universal English-Hebrew, Hebrew-English Dictionary

שאלות חזרה לקראת מבחן מפמ"ר אינטרנט וסייבר


Advisor Copy. Welcome the NCSYers to your session. Feel free to try a quick icebreaker to learn their names.

נילי חמני

7 קרפ תויגול,תויטמתירא תודוקפ הזזהו

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

ב. משרד החינוך בגרות לנבחנים אקסטרניים א נ ג ל י ת (MODULE B) הוראות מיוחדות: )2( בתום הבחינה החזר את השאלון למשגיח. בהצלחה!

מבוא לרשתות - תרגול מס' 11 Transparent Bridges

מבוא למדעי המחשב בשפת ++C - חוברת תרגילים

מבוא למדעי המחשב בשפת JAVA חוברת תרגילים... 1

מותאמת לסביבת. Visual C# 2005 Express שונות. ולבצע rename לשם המבוקש

מבוא למדעי המחשב בשפת ++C - חוברת תרגילים

תכנות בטוח חלק ב ' מאת עידו קנר

לצפייה בפתרון בווידאו לתרגילים שבחוברת, כנסו ל "סטטיסטיקה והסתברות" בשאלון 802 שבאתר

חטיבת המינרלים החיוניים תתמקד בשוקי האגרו וחטיבת הפתרונות המיוחדים תשמש כחטיבה התעשייתית; כיל דשנים מיוחדים תשולב בחטיבת המינרלים החיוניים;

Genetic Tests for Partners of CF patients

תרגול נושאי התרגול כעץ חיפוש בינארי : העץ הימני. Inorder(x) 1) if x NULL 2) then Inorder(left(x)) 3) print key[x] 4) Inorder(right(x))

פרק מושגים חדשים שימוש בפונקציות לשם מה?

מדריך למשתמש התקנה עצמית

עד כה עסקנו בתוכניות שמתקדמות פקודה אחרי פקודה העתק ל- ax את הערך 3 העתק ל- bx את הערך 4 הוסף ל- ax את bx כפול את התוצאה ב- 2 והעתק ל- cx

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

חזרה, מיונים פולינה לוצקר

ב. משרד החינוך בגרות לנבחנים אקסטרניים א נ ג ל י ת (MODULE B) הוראות מיוחדות: )2( בתום הבחינה החזר את השאלון למשגיח. בהצלחה!

אנגלית שאלון ז' (MODULE G) ג רסה א' הוראות לנבחן )מילון אנגלי-ערבי / ערבי-אנגלי )

מותאמת לסביבת. Visual C# 2005 Express שונות. ולבצע rename לשם המבוקש

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון ב' Corresponds with Module B גרסה ב' הוראות לנבחן

Name Page 1 of 5. ,דף ד: This week s bechina starts at the bottom of שיר של חול

Transcription:

1 מערכים יצירת מערך הפונקציה var_dump הפונקציה print_r אופן הפעולה של מערך מערך דו מימדי הפקודה list האופרטור,+,==,===!= ו-!== הפונקציה count הפונקציה is_array הפונקציה isset הפונקציה array_key_exists הפונקציה in_array הפונקציה array_flip הפונקציה array_reverse מצביע של מערך הלולאה foreach הפונקציה array_combine הפונקציה array_walk הפונקציה array_walk_recursive מיון מערכים הפונקציה shuffle הפונקציה arrayrand שימוש במערך כ- Stack שימוש במערך כ- Queue שימוש במערך כ- Set

2 יצירת מערך ב- PHP יוצרים מערך חדש באמצעות הפקודה array אשר מחזירה reference למערך החדש. ניתן לשלוח לפקודה הזו את הערכים שבהם רוצים לאתחל את המערך החדש שיוצרים. לכל ערך במערך החדש יש key שידוע גם כמספר האינדקס. הדוגמא הבאה מציגה את יצירתו של מערך פשוט אשר מאותחל בערכים 200 100, ו- 300. $vec = array(100,200,300); for($index=0; $index<3; $index++) echo "<BR>vec[$index]=".$vec[$index]; vec[0]=100 vec[1]=200 vec[2]=300 כיוון שה- type המדוייק של כל אחד מערכי המערך נקבע בעת היצירה שלו ניתן באותו אופן לייצור גם מערך של מחרוזות תווים. $vec = array("moshe","david","mike"); for($index=0; $index<3; $index++) echo "<BR>vec[$index]=".$vec[$index]; vec[0]=moshe vec[1]=david vec[2]=mike כאשר יוצרים מערך חדש ניתן לקבוע כ- keys ערכים אחרים במקום מספרי האינדקס המקובלים. עושים זאת באמצעות האופרטור <= תוך מיקומו בין ה- key (משמאל) וה- value (מימין). ה- key לא חייב להיות ערך מספרי שלם.

3 הדוגמא הבאה מציגה יצירת מערך שמחזיק (כ- (values שמות של מדינות ובתור ה- keys שלהם הוא מחזיק בשמות הקיצור שלהם. $vec = array("il"=>"israel","usa"=>"united States","UK"=>"United Kingdom"); echo "<BR>".$vec["IL"]; echo "<BR>".$vec["USA"]; echo "<BR>".$vec["UK"]; Israel United States United Kingdom

4 הפונקציה var_dump באמצעות הפונקציה var_dump ניתן להדפיס את תוכנו של מערך (או של כל ערך composite מסוג אחר... כגון אובייקט שנוצר ממחלקה). הדוגמא הבאה מציגה קריאה להפעלת הפונקציה לצורך הדפסת תוכנו של מערך. $vec = array("il"=>"israel","usa"=>"united States","UK"=>"United Kingdom"); var_dump($vec); array(3) ["IL"]=> string(6) "Israel" ["USA"]=> string(13) "United States" ["UK"]=> string(14) "United Kingdom" הפונקציה var_dump מאפשרת להדפיס את תוכנם של מספר מערכים. הדוגמא הבאה מציגה זאת. $countries = array("il"=>"israel","usa"=>"united States","UK"=>"United Kingdom"); $currencies = array("nis"=>"new Israeli Shekel","USD"=>"United States Dollar","UK"=>"United Kingdom Pounds"); $languages = array("he"=>"hebrew","en"=>"english","ru"=>"russian"); var_dump($countries,$currencies,$languages); array(3) ["IL"]=> string(6) "Israel" ["USA"]=> string(13) "United States" ["UK"]=> string(14) "United Kingdom" array(3) ["NIS"]=> string(18) "New Israeli Shekel" ["USD"]=> string(20) "United States Dollar" ["UK"]=> string(21) "United Kingdom Pounds" array(3) ["he"]=> string(6) "Hebrew" ["en"]=> string(7) "English" ["ru"]=> string(7) "Russian"

5 הפונקציה print_r באמצעות פונקציה זו ניתן לשלוח להדפסה את תוכנו של composite value (מערך, לדוגמא). להבדיל מהפונקציה var_dump ניתן להשתמש בפונקציה זו כדי להדפיס מערך יחיד בלבד. התכנית הבאה מדפיסה את תוכנו של מערך למסך באמצעות הפונקציה.print_r $countries = array("il"=>"israel","usa"=>"united States","UK"=>"United Kingdom"); $var = print_r($countries); הפלט שנקבל למסך הוא: Array ( [IL] => Israel [USA] => United States [UK] => United Kingdom )

6 אופן הפעולה של מערך אופן פעולתו של מערך ב- PHP דומה לפעולתו של מבנה הנתונים map שאיבריו שומרים על הסדר שלהם כפי שנקבע בעת יצירתו. כל איבר כולל ערך (value) אשר נשמר בצירוף מפתח.(key) בדרך זו ניתן להשתמש במערך כדי לדמות מבני נתונים שונים כגון queue, ו- map. stack אפשר לדמות את אופן פעולתו של המערך כלוח מודעות עשוי משעם שכל ערך (value) מחובר למפתח (key) אשר ממוקם על לוח השעם. בדרך זו, ניתן בכל עת לקבל את כל אחד מהערכים (ה- values ) באמצעות ה- key שלו. $vec = array( en => English, ru => Russian, fr => French ); הערך English" מחובר ללוח השעם באמצעות המפתח. en" הערך Russian" מחובר ללוח השעם באמצעות המפתח. ru" הערך " French מחובר ללוח השעם באמצעות המפתח. fr" בכל עת ניתן לקבל את כל אחד מהערכים באמצעות המפתח ששוייך לו. $language = $vec[ en ]; כל מפתח (key) יכול לשמש ערך (value) יחיד בלבד. ניסיון להוסיף יותר מערך אחד עם אותו מפתח (key) יגרום לכך שרק הערך (ה- (value האחרון שמוסיפים אכן יתווסף. התכנית הבאה מנסה להוסיף שני ערכים (values) שונים עם אותו מפתח (key) לאותו מערך. $countries = array("uk"=>"pound","il"=>"israel","usa"=>"united States","UK"=>"United Kingdom Pound"); $var = print_r($countries); הפלט שנקבל מעיד על כך שבניסיון להוסיף שני ערכים (values) שונים עם אותו מפתח (key) רק הערך האחרון שמנסים להוסיף אכן מתווסף. Array ( [UK] => United Kingdom Pound [IL] => Israel [USA] => United States )

7 מערך דו מימדי מערך דו מימדי הוא מערך רגיל שכל אחד מאיבריו כולל ערך שהוא מערך אחר. כדי ליצור מערך דו מימדי יש ליצור תחילה את כל אחד מהמערכים האחרים ולהשים אותם בתור הערך של כל אחד מהאיברים שמוכנסים למערך העיקרי. התכנית הבאה מציגה את יצירתו של מערך דו מימדי רגיל. $matrix = array(); $matrix[0] = array("a","b"); $matrix[1] = array("c","d"); echo $matrix[0][0]; echo $matrix[0][1]; echo $matrix[1][0]; echo $matrix[1][1]; abcd

8 הפקודה list באמצעות הפקודה list ניתן לבצע השמה מהירה של ערכים (values) של איברים במערך אל תוך משתנים שאנו עובדים עימם. השימוש בפקודה list נעשה באופן הבא. יש לרשום בצד שמאל של סימן השוויון את הפקודה list ובסוגריים עגולות מיד אחריה פירוט רשימת המשתנים שלתוכם רוצים להכניס את הערכים של האיברים שמוחזקים במערך. יש להשתמש בפסיק כסימן מפריד בין המשתנים הללו. בצד ימין של סימן השוויון יש לרשום את שמו של המשתנה שמהווה את המערך שאת ערכיו להשים אל תוך המשתנים שפירטנו. התכנית הבאה יוצרת מערך שכולל ארבעה איברים ולאחר מכן מבצעת השמה של הערכים באותם איברים אל תוך משתנים נפרדים. $names=array("moshe","david","mike","ram"); list($manager,$assistant,$teacher,$president) = $names; echo "<BR>manager=$manager"; echo "<BR>assistant=$assistant"; echo "<BR>teacher=$teacher"; echo "<BR>president=$president"; manager=moshe assistant=david teacher=mike president=ram

9 האופרטורים,+,==,===!= ו-!== באמצעות הפעלת האופרטור + על שני מערכים נקבל מערך חדש שמהווה union של שני המערכים. אופן פעולתו של אופרטור זה מתבסס על ה- keys שכל אחד משני המערכים כולל. במקרה שקיים key שמופיע גם במערך הראשון וגם במערך השני אז הערך שמופיע במערך הראשון הוא זה שיופיע במערך החדש שמקבלים. הדוגמא הבאה כוללת הפעלה של + על שני מערכים והדפסת המערך החדש שמתקבל למסך. $veca = array(1=>"a",2=>"b",3=>"c"); $vecb = array(1=>"d",4=>"e",5=>"f",6=>"g"); $vecc = $veca + $vecb; print_r($vecc); Array ( [1] => a [2] => b [3] => c [4] => e [5] => f [6] => g ) השוואה בין שני מערכים באמצעות האופרטור == תחזיר true אם (ורק אם) שני המערכים מחזיקים את אותם ערכים (values) וה- keys של כל אחד מהם זהים בהתאמה. השוואה בין שני מערכים באמצעות האופרטור === מבצעת את אותה השוואה רק שבנוסף, כדי שתחזיר את הערך true יש צורך בכך שהמיקום של האיברים בכל אחד משני המערכים יהיה זהה. האופרטורים =! ו-==! פועלים בהתאמה באופן הפוך. במקרים שבהם האופרטור == מחזיר true האופרטור =! מחזיר false ולהיפך. במקרים שבהם האופרטור === מחזיר true האופרטור ==! מחזיר false ולהיפך. הדוגמא הבאה מציגה את אופן הפעולה של האופרטורים ==, ===, =! ו- ==!. $veca = array(1=>"a",2=>"b",3=>"c"); $vecb = array(1=>"a",2=>"b",3=>"c"); $vecc = array(3=>"c",1=>"a",2=>"b"); echo "<BR>vecA:"; print_r($veca); echo "<BR>vecB:"; print_r($vecb); echo "<BR>vecC:"; print_r($vecc); if($veca==$vecb)

10 echo "<BR>vecA==vecB"; else echo "<BR>vecA!=vecB"; if($veca===$vecb) echo "<BR>vecA===vecB"; else echo "<BR>vecA!==vecB"; if($veca==$vecc) echo "<BR>vecA==vecC"; else echo "<BR>vecA!=vecC"; if($veca===$vecc) echo "<BR>vecA===vecC"; else echo "<BR>vecA!==vecC";

11 veca:array ( [1] => a [2] => b [3] => c ) vecb:array ( [1] => a [2] => b [3] => c ) vecc:array ( [3] => c [1] => a [2] => b ) veca==vecb veca===vecb veca==vecc veca!==vecc

12 הפונקציה count באמצעות הפונקציה count ניתן לקבל את גודלו (מספר האיברים) של מערך נתון. הדוגמא הבאה מציגה את אופן הפעולה של פונקציה זו. $vec = array(1=>"a",2=>"b",3=>"c"); echo count($vec); 3

13 הפונקציה is_array באמצעות פונקציה זו ניתן לדעת אם משתנה מסוים הוא מערך. הדוגמא הבאה מציגה הפעלה פשוטה של פונקציה זו. $vec = array(1=>"a",2=>"b",3=>"c"); $num = 9; if(is_array($vec)) echo "<BR>vec is array"; else echo "<BR>vec is not array"; if(is_array($num)) echo "<BR>num is array"; else echo "<BR>num is not array"; הפלט של התכנית הוא: vec is array num is not array

14 הפונקציה isset באמצעות הפונקציה isset ניתן לבדוק אם key מסוים כבר קיים במערך או לא. $vec = array('a'=>1,'b'=>2,'c'=>3); if(isset($vec['a'])) echo "<BR>'a' key exists"; if(isset($vec['b'])) echo "<BR>'b' key exists"; if(isset($vec['c'])) echo "<BR>'c' key exists"; if(isset($vec['d'])) echo "<BR>'d' key exists"; if(isset($vec['e'])) echo "<BR>'e' key exists"; 'a' key exists 'b' key exists 'c' key exists הדוגמא הבאה מציגה את אופן השימוש בפונקציה זו.

15 הפונקציה array_key_exists באמצעות פונקציה זו ניתן לדעת אם key מסוים כבר קיים במערך או לא. הדוגמא הבאה מציגה את אופן השימוש בפונקציה זו. $vec = array('a'=>1,'b'=>2,'c'=>3); if(array_key_exists('a',$vec)) echo "<BR>'a' key exists"; if(array_key_exists('b',$vec)) echo "<BR>'b' key exists"; if(array_key_exists('c',$vec)) echo "<BR>'c' key exists"; if(array_key_exists('d',$vec)) echo "<BR>'d' key exists"; if(array_key_exists('e',$vec)) echo "<BR>'e' key exists"; 'a' key exists 'b' key exists 'c' key exists ההבדל בין השימוש בפונקציה זו לפונקציה isset הוא שבאותם מקרים שבהם ה- value של key מסוים הוא null הפונקציה.true תחזיר לנו array_key_exists בעוד שהפונקציה null תחזיר לנו isset

16 הפונקציה in_array באמצעות פונקציה זו ניתן לבדוק אם ערך (value) מסוים קיים במערך. הדוגמא הבאה מציגה את אופן השימוש בפונקציה זו. $vec = array('a','b','c','d','f','g','h'); if(in_array('a',$vec)) echo "<BR>'a' exists"; else echo "<BR>'a' doesn't exist"; if(in_array('b',$vec)) echo "<BR>'b' exists"; else echo "<BR>'b' doesn't exist"; if(in_array('c',$vec)) echo "<BR>'c' exists"; else echo "<BR>'c' doesn't exist"; if(in_array('d',$vec)) echo "<BR>'d' exists"; else echo "<BR>'d' doesn't exist";

17 if(in_array('e',$vec)) echo "<BR>'e' exists"; else echo "<BR>'e' doesn't exist"; 'a' exists 'b' exists 'c' exists 'd' exists 'e' doesn't exist

18 הפונקציה array_flip באמצעות פונקציה זו ניתן על בסיס מערך קיים ליצור מערך חדש שה- keys שלו הם ה- values של המערך הקיים וה- values הם ה-.keys הדוגמא הבאה מציגה שימוש בפונקציה זו. $veca = array("en"=>"english","ru"=>"russian","he"=>"hebrew"); $vecb = array_flip($veca); echo "veca:<br>"; var_dump($veca); echo "<br><br>vecb:<br>"; var_dump($vecb); veca: array(3) ["en"]=> string(7) "english" ["ru"]=> string(7) "russian" ["he"]=> string(6) "hebrew" vecb: array(3) ["english"]=> string(2) "en" ["russian"]=> string(2) "ru" ["hebrew"]=> string(2) "he"

19 הפונקציה array_reverse באמצעות פונקציה זו ניתן על בסיס מערך קיים לקבל מערך חדש שסדר האיברים שלו הפוך לסדר האיברים במערך הקיים. התכנית הבאה מדגימה את אופן השימוש בפונקציה זו. $veca = array("en"=>"english","ru"=>"russian","he"=>"hebrew"); $vecb = array_reverse($veca); echo "veca:<br>"; var_dump($veca); echo "<br><br>vecb:<br>"; var_dump($vecb); veca: array(3) ["en"]=> string(7) "english" ["ru"]=> string(7) "russian" ["he"]=> string(6) "hebrew" vecb: array(3) ["he"]=> string(6) "hebrew" ["ru"]=> string(7) "russian" ["en"]=> string(7) "english"

20 מצביע של מערך ניתן לעבור על הערכים שמוחזקים במערך באמצעות מצביע.(pointer) באמצעות הפונקציה reset ניתן לגרום למצביע של המערך לעבור לתחילתו. באמצעות הפונקציה next ניתן לגרום למצביע לעבור לאיבר הבא של המערך. באמצעות הפונקציה prev ניתן לגרום למצביע לעבור לאיבר הקודם של המערך. באמצעות הפונקציה current ניתן לקבל את ה- value של האלמנט הנוכחי, שעליו המצביע ממוקם. באמצעות הפונקציה key ניתן לקבל את ה- key של האלמנט הנוכחי, שעליו המצביע ממוקם. התכנית הבאה מציגה את אופן השימוש בפונקציות אלה. $vec = array("a","b","c","d","f","g","h"); reset($vec); while(key($vec)!==null) echo key($vec)." is the key and ".current($vec)." is the value<br>"; next($vec); 0 is the key and a is the value 1 is the key and b is the value 2 is the key and c is the value 3 is the key and d is the value 4 is the key and f is the value 5 is the key and g is the value 6 is the key and h is the value

21 הלולאה foreach באמצעות הלולאה foreach ניתן לעבור על כל האיברים במערך באופן שמאפשר קבלת ה- key וה- value של כל אחד מהם. foreach( as => ) הערך הראשון (ראשון משמאל) שיש לרשום הוא שם המערך (המשתנה שמחזיק בתוכו את המערך). הערך השני (מימין למילה as הוא שם המשתנה שבכל איטרציה במעבר על פני האלמנטים של המערך יחזיק ב- key של האיבר הנוכחי והערך השלישי (מימין לאופרטור <= הוא שם המשתנה שיחזיק ב- value של האיבר הנוכחי. בדרך זו ניתן לעבור על כל אחד מהאיברים שבמערך ולקבל את ה- key ואת ה- value של כל אחד מהם. $vec = array("a","b","c","d","f","g","h"); foreach($vec as $key => $value) echo "<BR>key=$key value=$value"; key=0 value=a key=1 value=b key=2 value=c key=3 value=d key=4 value=f key=5 value=g key=6 value=h הדוגמא הבאה מציגה שימוש פשוט בלולאה :foreach הפלט שיופיע למסך הוא: חשוב להבין שהלולאה foreach עובדת על עותק שנוצר מהמערך המקורי. מסיבה זו, אם תוך כדי מעבר על האלמנטים באמצעות לולאת foreach ננסה לשנות את ה- value באיבר מסוים השינוי לא יתבצע במערך עצמו וכאשר הלולאה תסתיים ונבדוק את המערך נגלה שהוא כלל לא השתנה. באמצעות הוספת האופרטור & למשתנה שמחזיק את ה- value של כל איבר ואיבר ניתן לגרום לשינוי במערך שעליו הלולאה פועלת. הדוגמא הבאה מציגה זאת.

22 $vec = array(100,200,300); echo "<br>before"; foreach($vec as $key => &$value) echo "<BR>key=$key value=$value"; $value = $value * 10; echo "<br>after"; foreach($vec as $key => $value) echo "<BR>key=$key value=$value"; הפלט שיתקבל הוא: before key=0 value=100 key=1 value=200 key=2 value=300 after key=0 value=1000 key=1 value=2000 key=2 value=2000

23 כאשר משתמשים בלולאה foreach ניתן לחילופין להתעלם מה- key ולהתייחס רק ל- value. הדוגמא הבאה מציגה זאת. $vec = array(100,200,300); foreach($vec as $value) echo "<BR>value=$value"; value=100 value=200 value=300 הפלט שיהיה למסך הוא:

24 הפונקציה array_combine פונקציה זו מקבלת בעת הפעלתה שני מערכים ויוצרת מערך חדש שה- keys שלו הם ה- values של המערך הראשון וה- values הם ה- values של המערך השני. $keys = array("il","us","uk"); $values = array("israel","usa","united Kingdom"); $vec = array_combine($keys,$values); foreach($vec as $key=>$value) echo "<BR>key=$key value=$value"; key=il value=israel key=us value=usa key=uk value=united Kingdom הדוגמא הבאה מציגה שימוש בסיסי בפונקציה זו. הפלט שנקבל למסך הוא:

25 הפונקציה array_walk פונקציה זו מאפשרת לעבור על כל אחד מהאיברים במערך נתון ולקרוא להפעלת פונקציה מסוימת על ה- key וה- value כל אחד מהם. הארגומנט הראשון שיש לשלוח אליה הוא המערך (שם המשתנה שמחזיק במערך) שעל האיברים שלו רוצים לעבור. הארגומנט השני שיש לשלוח הוא שם הפונקציה שאנו רוצים להפעיל על ה- key וה- value של כל אחד מהאיברים. הפונקציה שאת שמה שולחים בתור הארגומנט השני לפונקציה array_walk תופעל על כל אחד מהאיברים. פונקציה זו צריכה להיות עם שני פרמטרים. פרמטר אחד אשר יחזיק ב- key ופרמטר שני שיחזיק ב- value. ניתן לשלוח לפונקציה array_walk ארגומנט שלישי אשר יישלח אל הפונקציה אשר תופעל על כל אחד מהאיברים של המערך. התכנית הבאה מדגימה את אופן השימוש בפונקציה :array_walk $cars = array("t" => "Toyota", "M" => "Mazda", "S" => "Suzuki", "Y" => "Yamaha"); function changearray(&$val, $key, $prefix) $val = "$prefix: $val"; function printarray($itemvalue, $itemkey) echo "$itemkey : $itemvalue<br>"; echo "before...<br>"; array_walk($cars, 'printarray'); array_walk($cars, 'changearray', 'car'); echo "after...<br>"; array_walk($cars, 'printarray'); הפלט של התכנית הוא: before... T : Toyota M : Mazda S : Suzuki Y : Yamaha

26 after... T : car: Toyota M : car: Mazda S : car: Suzuki Y : car: Yamaha

27 הפונקציה array_walk_recursive פעולתה של פונקציה זו דומה לפעולתה של הפונקציה.array_walk להבדיל מ- arraywalk פונקציה זו עוברת על כל האיברים של כל המערכים שמוחזקים כ- values של האיברים של המערך העיקרי ושל כל אחד מהמערכים האחרים שמוחזקים כ- values על ידיו באופן ישיר או עקיף.הדוגמא הבאה מציגה את אופן השימוש בפונקציה זו. $japan_cars = array( "T" => "Toyota", "M" => "Mazda", "S" => "Suzuki", "Y" => "Yamaha"); $usa_cars = array( "C" => "Chevrolet", "P" => "Pontiac", "C" => "Cryzler"); $cars = array("us" => $usa_cars, "JP" => $japan_cars); function changearray(&$val, $key, $prefix) $val = "$prefix: $val"; function printarray($itemvalue, $itemkey) echo "$itemkey : $itemvalue<br>"; echo "before...<br>"; array_walk_recursive($cars, 'printarray'); array_walk_recursive($cars, 'changearray', 'car'); echo "after...<br>"; array_walk_recursive($cars, 'printarray');

28 before... C : Cryzler P : Pontiac T : Toyota M : Mazda S : Suzuki Y : Yamaha after... C : car: Cryzler P : car: Pontiac T : car: Toyota M : car: Mazda S : car: Suzuki Y : car: Yamaha

29 מיון מערכים שפת התיכנות PHP כוללת מגוון של פונקציות למיון מערכים. שתי הפונקציות הפשוטות ביותר הן sort ו- asort. כל אחת משתי המתודות הללו מקבלת כארגומנט (אחד לפחות) את המערך שאנו רוצים למיין reference) לאובייקט שמייצג את המערך שרוצים למיין). ניתן, בנוסף, לשלוח פרמטר שני אשר יורה על האופן שבו המיון יתבצע. בעוד שהפונקציה asort לא משנה את ה- keys הפונקציה sort מחליפה את ה- keys במספרי אינדקס החל מ- 0 (עבור ה- value הראשון) וכלה ב- index-1 (עבור ה- value האחרון). הדוגמא הבאה מציגה שימוש בסיסי בפונקציות sort ו- asort. $vec = array("z"=>"ziv","b"=>"boaz","d"=>"david","a"=>"antony"); echo "<br>before...<br>"; var_dump($vec); asort($vec); echo "<br>after asort()<br>"; var_dump($vec); shuffle($vec); echo "<br>after shuffle()<br>"; var_dump($vec); sort($vec); echo "<br>after sort()<br>"; var_dump($vec); before... array(4) ["z"]=> string(3) "Ziv" ["b"]=> string(4) "Boaz" ["d"]=> string(5) "David" ["a"]=> string(6) "Antony" after sort() array(4) ["a"]=> string(6) "Antony" ["b"]=> string(4) "Boaz" ["d"]=> string(5) "David" ["z"]=> string(3) "Ziv" after shuffle() array(4) [0]=> string(6) "Antony" [1]=> string(3) "Ziv" [2]=> string(4) "Boaz" [3]=> string(5) "David" after asort() array(4) [0]=> string(6) "Antony" [1]=> string(4) "Boaz" [2]=> string(5) "David" [3]=> string(3) "Ziv"

30 הארגומנט השני שניתן לשלוח לפונקציה sort ולפונקציה asort יכול להיות אחד הערכים הבאים: SOFT_REGULAR המיון יתבצע על פי ה- values של כל אחד מהאיברים ומבלי לבצע שום שינוי באיברים הממוינים. SOFT_NUMERIC תחילה, כל אחד מה- values של כל אחד מהאיברים יומר ל- value numeric ורק אחר כך המיון יתבצע (על פי אותם numeric values שהתקבלו). SORT_STRINGS תחילה, כל אחד מה- values של כל אחד מהאיברים יומר ל- value string ורק לאחר מכן המיון יתבצע (על פי אותם string values שהתקבלו). הפונקציה rsort ממיינת את איברי המערך בסדר הופכי. כמו כן, היא מסירה את כל ה- keys וקובעת אחרים במקומם. הפונקציה ksort ממיינת את איברי המערך על פי ה- keys שלהם. הפונקציה krsort ממיינת את איברי המערך על פי ה- keys שלהם (בסדר הופכי). הפונקציה usort ממיינת את איברי המערך על פי ה- values שלהם ותוך שימוש בפונקציה שיש לשלוח אליה בתור ארגומנט שני. הפונקציה שיש לשלוח צריכה להיות מוגדרת עם שני פרמטרים ועליה להחזיר או 0 או ערך חיובי או ערך שלילי. התכנית הבאה מציגה דוגמא לשימוש ב- usort. function cmp($a, $b) if ($a == $b) return 0; return ($a < $b)? -1 : 1; $vec = array(12,532,12,56322343,232,5,2,1,1,1,4,2, 5, 6, 1); usort($vec, "cmp"); foreach ($vec as $key => $value)

31 echo "$key: $value<br>"; 0: 1 1: 1 2: 1 3: 1 4: 2 5: 2 6: 4 7: 5 8: 5 9: 6 10: 12 11: 12 12: 232 13: 532 14: 56322343

32 הפונקציה shuffle פונקציה זו מערבבת את איברי המערך באופן אקראי. הדוגמא הבאה מציגה שימוש בסיסי בפונקציות sort ו- asort. $vec = array("z"=>"ziv","b"=>"boaz","d"=>"david","a"=>"antony"); echo "<br>before...<br>"; var_dump($vec); asort($vec); echo "<br>after asort()<br>"; var_dump($vec); shuffle($vec); echo "<br>after shuffle()<br>"; var_dump($vec); sort($vec); echo "<br>after sort()<br>"; var_dump($vec); before... array(4) ["z"]=> string(3) "Ziv" ["b"]=> string(4) "Boaz" ["d"]=> string(5) "David" ["a"]=> string(6) "Antony" after sort() array(4) ["a"]=> string(6) "Antony" ["b"]=> string(4) "Boaz" ["d"]=> string(5) "David" ["z"]=> string(3) "Ziv" after shuffle() array(4) [0]=> string(6) "Antony" [1]=> string(3) "Ziv" [2]=> string(4) "Boaz" [3]=> string(5) "David" after asort() array(4) [0]=> string(6) "Antony" [1]=> string(4) "Boaz" [2]=> string(5) "David" [3]=> string(3) "Ziv"

33 הפונקציה array_rand באמצעות פונקציה זו ניתן לקבל איברים מתוך המערך אשר ייבחרו באופן רנדומלי. הארגומנט הראשון שיש לשלוח לפונקציה זו הוא המערך (שם המשתנה שמחזיק במערך שמתוכו אנו רוצים לקבל איברים באופן רנדומלי). הארגומנט השני שיש לשלוח הוא מספר האיברים שאנו רוצים לקבל באופן רנדומלי מהמערך. אם אנו מבקשים איבר רנדומלי אחד אז הפונקציה תחזיר את ה- key שלו. אם אנו מבקשים מספר איברים (גדול מ- 1 ) אז הפונקציה תחזיר מערך אשר ערכיו הם ה- keys של אותם איברים שנבחרו באופן רנדומלי. b c f הדוגמא הבאה מציגה שימוש פשוט בפונקציה זו. $vec = array("a","b","c","d","f","g","h"); $random_keys = array_rand($vec,3); echo $vec[$random_keys[0]]; echo "<BR>"; echo $vec[$random_keys[1]]; echo "<BR>"; echo $vec[$random_keys[2]]; echo "<BR>"; הפלט שנקבל בכל הרצה יהיה שונה. כך, למשל, הוא עשוי להיות הפלט הבא:

34 שימוש במערך כ Stack באמצעות הפונקציות array_push ו- array_pop ניתן להשתמש במערך כמחסנית. הפונקציה array_push מקבלת שני ארגומנטים. הארגומנט הראשון הוא המערך (השם של המשתנה שמחזיק במערך) והארגומנט השני הוא הערך שאנו רוצים להוסיף לו (לסופו). בכל הוספה של ערך נוסף גודל המערך גדל ב- 1. ניתן לשלוח ארגומנטים נוספים במידה שרוצים להוסיף מספר ערכים חדשים בו זמנית. הפונקציה מחזירה את מספר האיברים שיש במערך לאחר ההוספה. הפונקציה array_pop מחזירה את הערך האחרון שהתווסף למערך ומקטינה את אורכו ב- 1. הדוגמא הבאה מציגה שימוש פשוט בפונקציות אלה. $vec = array(); array_push($vec,"a"); array_push($vec,"shalom"); $num = array_push($vec,"israel"); echo "<br>current num of elements is ".$num; $str = array_pop($vec); echo "<br>last added element is ".$str; current num of elements is 3 last added element is israel

35 שימוש במערך כ Queue באמצעות הפונקציות array_shift ו- array_unshift ניתן להשתמש במערך בדומה למבנה הנתונים תור. הפונקציה array_shift מחזירה את האיבר הראשון של המערך, מוזיזה את כל האיברים שמאלה ובמידה שה- keys הם מספרים אז הפונקציה תעדכן אותם כך שמספר האינדקס של האלמנט הראשון יתחיל מאפס. הפונקציה array_unshift מקבלת איבר (או איברים) שאנו רוצים להוסיף למערך ומוסיפה אותו (אותם) לתחילתו. הפונקציה מוזיזה את כל האיברים של המערך ימינה ובמידה שה- keys הם מספרי אינדקס אז היא מעדכנת אותם כך שמספר האינדקס של האיבר הראשון שהתווסף יהיה 0. הדוגמא הבאה מציגה שימוש בפונקציות אלה. $vec = array(); array_unshift($vec,"salam"); array_unshift($vec,"shalom"); array_unshift($vec,"peace"); echo "<br>before..."; var_dump($vec); echo "<br>"; $ob = array_shift($vec); echo "<br>after..."; var_dump($vec); before... array(3) [0]=> string(5) "peace" [1]=> string(6) "shalom" [2]=> string(5) "salam" after... array(2) [0]=> string(6) "shalom" [1]=> string(5) "salam"

36 שימוש במערך כ Set כאשר מפעילים את פונקציה array_diff יש לשלוח אליה שני מערכים. הפונקציה מחזירה מערך חדש אשר מכיל את כל האיברים שמופיעים במערך הראשון ושלא מופיעים בשני. הפונקציה מתבססת בפעולתה על הייצוג המחרוזתי של כל אחד מה- values. הדוגמא הבאה מציגה שימוש בסיסי בפונקציה זו. $veca = array("a","b","c"); $vecb = array("a","d","e"); $vecc = array_diff($veca,$vecb); echo "<br>veca..."; var_dump($veca); echo "<br>vecb..."; var_dump($vecb); echo "<br>vecc..."; var_dump($vecc); הפלט שנקבל למסך הוא. veca...array(3) [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" vecb...array(3) [0]=> string(1) "a" [1]=> string(1) "d" [2]=> string(1) "e" vecc...array(2) [1]=> string(1) "b" [2]=> string(1) "c" באמצעות הפונקציה array_diff_assoc מקבלים פונקציונליות דומה בהבדל אחד. במקום להתבסס על הייצוג המחרוזתי של כל אחד מהאלמנטים היא משווה גם את ה- keys וגם את ה- values. באמצעות הפונקציה array_diff_ukey מקבלים פונקציונליות דומה בהבדל אחד. היא מתבססת על ה- keys בלבד. הפונקציה array_intersect מאפשרת לנו לקבל את כל ה- values שמופיעים גם במערך הראשון גם במערך השני. הפונקציה מקבלת שני ארגומנטים (את שני המערכים הנתונים) ומחזירה מערך חדש אשר כולל את כל האיברים שמופיעים גם במערך הראשון וגם במערך השני.

37 התכנית הבאה מציגה שימוש בסיסי בפונקציה.array_intersect $veca = array("a","b","c","e","f"); $vecb = array("a","d","e","z","m"); $vecc = array_intersect($veca,$vecb); echo "<br>veca..."; var_dump($veca); echo "<br>vecb..."; var_dump($vecb); echo "<br>vecc..."; var_dump($vecc); veca...array(5) [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "e" [4]=> string(1) "f" vecb...array(5) [0]=> string(1) "a" [1]=> string(1) "d" [2]=> string(1) "e" [3]=> string(1) "z" [4]=> string(1) "m" vecc...array(2) [0]=> string(1) "a" [3]=> string(1) "e"